package dmsxl.tanxin;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.stream.IntStream;

/**
 * Author: Zhang Dongwei
 * Date: 2023/7/19 21:50
 * 给你一个整数数组 nums 和一个整数 k ，按以下方法修改该数组：
 * <p>
 * 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。
 * 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。
 * <p>
 * 以这种方式修改数组后，返回数组 可能的最大和 。
 */
public class tx9_1005 {

    public static void main(String[] args) {
        int[] nums = {2, -3, -1, 5, -4};
//        int[] nums = {2, 3, 1, 5, 4};
//        int[] nums = {-2, -3, -1, -5, -4};
        int k = 2;
        System.out.println(largestSumAfterKNegations(nums, k));
    }

    public static int largestSumAfterKNegations(int[] nums, int k) {
        Arrays.sort(nums);
        int i = 0;
        for (; i < nums.length; i++) {
            if (nums[i] < 0 && k > 0) {
                nums[i] = -nums[i];
                k--;
            }
        }
        Arrays.sort(nums);
        if(k % 2 == 1) {
            nums[0] = -nums[0];
        }
        int res = 0;
        for(int j = 0; j < nums.length; j++) {
            res += nums[j];
        }
        return res;
    }
}
